// #include <iostream>
// #include <string>
// #include <map>
// #include <utility>
// using namespace std;
// int main() {
//     map<int, string> m;
//     m.insert(pair<int, string>(1, "hello"));
//     m.insert(pair<int, string>(2, " world"));
//     m.insert(pair<int, string>(3, "!"));
//     for(auto& e : m) {
//         cout << "<" << e.first << ":" << e.second << ">" << " ";
//     }
//     cout << endl;
//     return 0;
// }

// template <class T1, class T2>
// pair<T1, T2> make_pair(T1 x, T2 y) {
//     return pair<T1, T2>(x, y);
// }




// #include <iostream>
// #include <string>
// #include <map>
// #include <utility>
// using namespace std;
// int main() {
//     map<int, string> m;
//     m.insert(make_pair(1, "hello"));
//     m.insert(make_pair(2, " world"));
//     m.insert(make_pair(3, "!"));
//     for(auto& e : m) {
//         cout << "<" << e.first << ":" << e.second << ">" << " ";
//     }
//     cout << endl;
//     return 0;
// }


// #include <iostream>
// #include <string>
// #include <map>
// #include <utility>
// using namespace std;
// int main() {
//     map<int, string> m;
//     m.insert(make_pair(1, "hello"));
//     m.insert(make_pair(2, " world"));
//     m.insert(make_pair(3, "!"));
//     map<int, string>::iterator pos = m.find(2);
//     if(pos != m.end()) {
//         cout << pos->second << endl;
//     }
//     return 0;
// }


// size_type erase(const key_type& k);
// void erase(iterator position)

// #include <iostream>
// #include <string>
// #include <map>
// using namespace std;
// int main() {
//     map<int, string> m;
//     m.insert(make_pair(1, "hello"));
//     m.insert(make_pair(2, " world"));
//     m.insert(make_pair(3, "!"));
//     m.erase(2);
//     map<int, string>::iterator pos = m.find(1);
//     if(pos != m.end()) {
//         m.erase(pos);
//     }
//     for(auto& e : m) {
//         cout << "<" << e.first << ":" << e.second << ">" << " ";
//     }
//     return 0;
// }


// mapped_type& operator[](const key_type& k) {
//     // 调用insert函数插入键值对，然后存一下返回值
//     pair<iterator, bool> ret = insert(make_pair(k, mapped_type()));
//     // 拿出insert函数的迭代器
//     iterator it = ret.first;
//     // 根据迭代器位置的元素拿到value
//     return it->second;
// }


// #include <iostream>
// #include <string>
// #include <map>
// #include <utility>

// using namespace std;
// int main() {
//     map<int, string> m;
//     m.insert(make_pair(1, "hello"));
//     m.insert(make_pair(2, " world"));
//     m.insert(make_pair(3, "!"));
//     m[2] = "xywl";
//     m[4] = "!!";
//     for(auto& e : m) {
//         cout << "<" << e.first << ":" << e.second << ">" << " ";
//     }
//     cout << endl;
//     return 0;
// }


// #include <iostream>
// #include <string>
// #include <map>
// #include <utility>

// using namespace std;
// int main() {
//     map<int, string> m;
//     m.insert(make_pair(1, "hello"));
//     m.insert(make_pair(2, " world"));
//     m.insert(make_pair(3, "!!!"));
//     map<int, string>::iterator it = m.begin();
//     while(it != m.end()) {
//         cout << "<" << it->first << ":" << it->second << ">" << " ";
//         it++;
//     }
//     cout << endl;
//     return 0;
// }


// #include <iostream>
// #include <string>
// #include <map>
// #include <utility>
// using namespace std;

// int main() {
//     map<int, string> m;
//     m.insert(make_pair(1, "hello"));
//     m.insert(make_pair(2, " world"));
//     m.insert(make_pair(3, "!!!"));
//     map<int, string>::reverse_iterator rit = m.rbegin();
//     while(rit != m.rend()) {
//         cout << "<" << rit->first << ":" << rit->second << ">" << " ";
//         rit++;
//     }
//     cout << endl;
//     return 0;
// }

// #include <iostream>
// #include <string>
// #include <map>
// #include <utility>
// using namespace std;

// int main() {
//     map<int, string> m;
//     m.insert(make_pair(1, "hello"));
//     m.insert(make_pair(2, " world"));
//     m.insert(make_pair(3, "!!!"));
//     for(auto& e : m) {
//         cout << "<" << e.first << ":" << e.second << ">" << " ";
//     }
//     cout << endl;
//     return 0;
// }


// #include <iostream>
// #include <string>
// #include <map>
// #include <utility>
// using namespace std;
// int main() {
//     map<int, string> m;
//     m.insert(make_pair(1, "hello"));
//     m.insert(make_pair(2, " world"));
//     m.insert(make_pair(3, "!!!"));
//     cout << m.size() << endl;
//     cout << m.count(2) << endl;
//     m.clear();
//     cout << m.empty() << endl;
//     map<int, string> temp;
//     m.swap(temp);
//     return 0;
// }



#include <iostream>
#include <string>
#include <map>
#include <utility>
using namespace std;
int main() {
    multimap<int, string> m;
    m.insert(make_pair(1, "hello"));
    m.insert(make_pair(2, " world"));
    m.insert(make_pair(3, "!!!"));
    m.insert(make_pair(3, "..."));
    for(auto& e : m) {
        cout << "<" << e.first << ":" << e.second << ">" << " ";
    }
    cout << endl;
    return 0;
}